var Q = require('q'),
    entityCollection = require('../../../Base/server/controllers/EntityCollection');

exports.findByWorkLocationAndTerminal = function(workLocationId, terminalId, completeFun){
    var entity = entityCollection.getEntity("StationUser");
    entity.find(
        { WorkLocation: workLocationId, Terminal: terminalId }, 
        {},
        { path: 'User' }, function(err, record) {
        if (err) {
            var newErr = new Error();
            newErr.leval = 9;
            newErr.title = '查询作业工位交叉表错误';
            newErr.message = '请检查查询参数！';
            completeFun(newErr);
        } else {
            completeFun(null, record);
        }
    });
};

// 新增一条用户上岗记录
exports.insert = function (stationUserRecord) {
    var deferred = Q.defer();

    var stationUserEntity = entityCollection.getEntity("StationUser");
    stationUserEntity.insert(stationUserRecord, function (err, newRecord) {
        if (err) {
            var newErr = new Error();
            newErr.leval = 9;
            newErr.title = '新增上岗记录错误';
            newErr.message = '新增上岗记录失败';
            deferred.reject(newErr);
            return;
        }
        deferred.resolve(newRecord);
    });

    return deferred.promise;
};

// 根据工位查找最近一条用户上岗记录
exports.findLastAttendance = function (workLocationId) {
    var deferred = Q.defer();

    var entity = entityCollection.getEntity("StationUser");
    entity.Entity
    .find({ WorkLocation: workLocationId})
    .sort({ CreatedOn: -1 })
    .limit(1)
    .exec(function (err, record) {
        if (err) {
            var newErr = new Error();
            newErr.leval = 9;
            newErr.title = '查询用户上岗记录错误';
            newErr.message = '查询用户上岗记录失败';
            deferred.reject(newErr);
        } else {
            deferred.resolve(record);
        }
    });

    return deferred.promise;
};